English / 日本語
A kind of large birdcage for something unusual

バードケージは医療機器専用というわけではありません。これは産業用途のお客様向けの一例です

Birdcage FDM Workbench

MRI用バードケージコイルのための差分法(FDM)実験ツール
San Diego, CA, USA · お問い合わせ · durnan.org

ダウンロード

Birdcage FDM Workbench screenshot

このちょっとしたワークベンチは、最も危うい場所——「一見正しく見える」Excelのスプレッドシート——から生まれました。物理法則がやんわりと「それは違う」と教えてくれるまでは、ですが。ここで公開しているのは、その実験を整理し直したJavaベースの発展形です。2次元バードケージコイルの差分法モデルとして磁気ベクトルポテンシャルを解き、得られたB場をいくつかの方法で可視化します。

スプレッドシートからワークベンチへ

元々のモデルはExcel上でのスカラーポテンシャルによる差分法(FDM)でした。実験用としては十分でしたが、実は静電界の世界——電流ではなく電荷、回転(curl)ではなく勾配(gradient)——を暗黙のうちに前提としていました。目的がMRI用バードケージコイルのモデル化に変わった時点で、物理的にアップグレードが必要になりました。

こうして出来上がったのがこのBirdcage FDM Workbenchです。1000×1000のグリッド、調整可能なバードケージ直径とラング(rung)数、複数の可視化表示、そして触って楽しめる程度にはUIも整えてあります。

理論的背景 – バードケージにおける差分法

1. 基礎となる偏微分方程式

電気的(スカラー)定式化:

∇²φ = -ρ / ε
E = -∇φ
  

磁気的(ベクトル)定式化(本ツールで採用):

∇²A = -μ₀ J
B = ∇ × A
  

このワークベンチでは、z方向に電流が流れる2次元断面を仮定しているため、ゼロでないのはAz(x, y)のみです。これによりベクトルのポアソン方程式はAzに関するスカラーのポアソン方程式に帰着しますが、物理的には依然として磁気的な問題です。すなわち、源(source)は電荷ではなく電流であり、着目する場はEではなくBです。

2. ラプラシアンの離散化

間隔 Δx = Δy = DX の一様グリッド上では、2次元ラプラシアンは次のようになります:

∇²A_z(i,j) ≈ [A_z(i+1,j) + A_z(i-1,j) + A_z(i,j+1) + A_z(i,j-1) - 4 A_z(i,j)] / DX²
  

各内部ノードにおける離散ポアソン方程式は次の通りです:

A_z(i+1,j) + A_z(i-1,j) + A_z(i,j+1) + A_z(i,j-1) - 4 A_z(i,j) = -μ₀ J_z(i,j) DX²
  

これをSOR法(逐次過緩和法)により反復的に解き、偏微分方程式と境界条件の両方を満たす自己無撞着な解に収束するまでAzを更新していきます。

3. Az から B、|B| へ

Azのみがゼロでない場合、磁場は次のように表せます:

B_x = ∂A_z / ∂y
B_y = -∂A_z / ∂x
  

中心差分を用いると:

B_x(i,j) ≈ [A_z(i, j+1) - A_z(i, j-1)] / (2 DX)
B_y(i,j) ≈ -[A_z(i+1, j) - A_z(i-1, j)] / (2 DX)
|B|(i,j) = sqrt(B_x² + B_y²)
  

これが |B| タブと3D |B| 曲面表示に表示される内容です。すなわち、グリッド全体にわたってサンプリングした、Azのcurl(回転)の大きさです。

電気的FDM と 磁気的FDM – 何が本質的に変わるのか

観点 電気的FDM(スカラーφ) 磁気的FDM(ベクトルA)
未知数スカラーポテンシャル φ(x, y)ベクトルポテンシャル A(x, y)。ここでは Az(x, y) に帰着
源(ソース)項電荷密度 ρラング(rung)に沿った電流密度 Jz
場の導出E = -∇φ(勾配)B = ∇ × A(回転)
代表的な境界条件ディリクレ条件(φ固定)、ノイマン条件(絶縁)ノイマン/吸収境界(開放空間)、PEC上ではディリクレ条件になることも
形状への感度電荷は点や体積として存在電流は経路(ラング、ループ)上に存在
角度方向の構造重要でないことが多い本質的に重要 – バードケージモードはリング周りのcos/sin分布
「何かおかしい」となる典型例ポテンシャルは滑らかに見えるが境界の物理と整合しない境界や電流位相の誤りにより |B| が歪んで見える

境界条件、非線形性、そして「なぜこんなに変な場になるのか」

端を折り返すことによるノイマン境界/吸収境界条件

有限のグリッドには端がありますが、現実の世界にはありません。境界でAzを単純にゼロに固定してしまうと、人工的な導体箱を作ってしまい、場が領域内に反射して戻ってきます。ここで使っている対策は、シンプルなノイマン境界/吸収境界条件です:

// top and bottom
Az[i][0] = Az[i][1];
Az[i][NY - 1] = Az[i][NY - 2];
// left and right
Az[0][j] = Az[1][j];
Az[NX - 1][j] = Az[NX - 2][j];
  

こうして端を「折り返す」ことで法線方向の微分がほぼゼロになり、場が大きく跳ね返ることなく領域の外へ抜けていくようになります。完璧な吸収境界条件ではありませんが、シンプルで頑健であり、バードケージの実験用途には十分です。

行列サイズと境界の「圧政」

初期のバージョンでは比較的小さな行列を使っていました。バードケージ自体は問題なさそうに見えましたが、境界が近すぎて中央部の場を歪めてしまっていました。対策はシンプルですが、避けては通れないものでした:

コイルが余裕を持って領域の「内側」に収まると、中央部は自由空間のように振る舞うようになり、|B| の分布はようやく教科書通りの姿になります。

反復ソルバーと「試して、直して、繰り返す」という作法

このプロジェクト全体は、差分法によるモデリングが本質的に2つの意味で「反復的」であることを改めて教えてくれます:

最初のExcel版も、数字ときれいな色を出力するという意味では「動いて」いました。Java版ワークベンチは、得られる場が物理的に意味を持ち、安定していて解釈可能であるという意味で「動いて」います。その両者のギャップにこそ、すべての学びが詰まっています。

このワークベンチで見られるもの

ラング数の変更、バードケージ直径の調整、カラーマップの切り替え、OFF形式でのジオメトリ書き出し、任意の表示のPNG保存が行えます。内部で行っているのは結局のところグリッド上の差分計算に過ぎませんが、物理の様子を目に見える形にし、トレードオフを実感できるだけのつまみ(パラメータ)は揃っています。